<?php
// 显示所有错误
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// 加载数据库配置
require_once __DIR__ . '/../config/database.php';

// 尝试获取SQL文件内容
$sql_file = __DIR__ . '/../sql/cognitive_modules.sql';
if (file_exists($sql_file)) {
    $sql_content = file_get_contents($sql_file);
    $file_exists = true;
    $file_path = $sql_file;
} else {
    // 如果SQL文件不存在，则使用内嵌的SQL语句
    $file_exists = false;
    $file_path = "内嵌SQL";
    $sql_content = <<<SQL
-- 认知模块数据库结构
-- 创建表结构和基础数据

-- 创建认知模块类别表
CREATE TABLE IF NOT EXISTS `km_cognitive_categories` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `slug` varchar(100) NOT NULL,
  `description` text DEFAULT NULL,
  `age_group` enum('3-4','5-6','7-8','all') NOT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `thumbnail` varchar(255) DEFAULT NULL,
  `color_hex` varchar(20) DEFAULT NULL,
  `header_color_hex` varchar(20) DEFAULT NULL,
  `bg_gradient_start` varchar(20) DEFAULT NULL,
  `bg_gradient_end` varchar(20) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `display_order` int(11) NOT NULL DEFAULT 0,
  `created_at` datetime NOT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `slug_age_group` (`slug`, `age_group`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 创建认知模块内容表
CREATE TABLE IF NOT EXISTS `km_cognitive_modules` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `category_id` int(11) NOT NULL,
  `name` varchar(100) NOT NULL,
  `slug` varchar(100) NOT NULL,
  `description` text DEFAULT NULL,
  `introduction` text DEFAULT NULL,
  `color_hex` varchar(20) DEFAULT NULL,
  `icon` varchar(255) DEFAULT NULL,
  `thumbnail` varchar(255) DEFAULT NULL,
  `is_premium` tinyint(1) NOT NULL DEFAULT 0,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `display_order` int(11) NOT NULL DEFAULT 0,
  `created_at` datetime NOT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `category_slug` (`category_id`, `slug`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 创建认知模块子项表
CREATE TABLE IF NOT EXISTS `km_cognitive_items` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `module_id` int(11) NOT NULL,
  `name` varchar(100) NOT NULL,
  `description` text DEFAULT NULL,
  `content` text DEFAULT NULL,
  `additional_info` text DEFAULT NULL,
  `image_path` varchar(255) DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `display_order` int(11) NOT NULL DEFAULT 0,
  `created_at` datetime NOT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `module_id` (`module_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 插入3-4岁认知模块类别
INSERT INTO `km_cognitive_categories` 
(`name`, `slug`, `description`, `age_group`, `icon`, `thumbnail`, `color_hex`, `header_color_hex`, `bg_gradient_start`, `bg_gradient_end`, `is_active`, `display_order`, `created_at`)
VALUES 
('认知启蒙', 'cognitive', '通过有趣的互动方式，帮助孩子认识世界，培养基础认知能力', '3-4', 'images/categories/cognitive.png', 'images/cognitive/cognitive.jpg', '#FFB6C1', '#FF6B88', '#FFF9F0', '#FFF9F0', 1, 1, NOW());

-- 插入3-4岁认知模块
INSERT INTO `km_cognitive_modules` 
(`category_id`, `name`, `slug`, `description`, `introduction`, `color_hex`, `icon`, `thumbnail`, `is_premium`, `is_active`, `display_order`, `created_at`)
VALUES 
(1, '颜色认知', 'colors', '认识基础颜色，了解颜色在生活中的应用，培养色彩辨别能力', '颜色是我们周围世界的重要特征，学习辨认颜色能帮助孩子更好地观察和描述身边的事物。', '#FF9AA2', 'images/icons/colors.png', 'images/cognitive/colors.jpg', 0, 1, 1, NOW()),
(1, '形状认知', 'shapes', '认识常见几何形状，了解形状特征，培养形状辨别能力', '形状是物体的基本特征之一，学习辨认形状能帮助孩子理解物体的特性和区别。', '#FFB347', 'images/icons/shapes.png', 'images/cognitive/shapes.jpg', 0, 1, 2, NOW()),
(1, '数字认知', 'numbers', '认识基础数字，学习数量对应关系，培养初步计数能力', '数字是我们理解世界的基础工具，学习数字和计数能帮助孩子理解数量概念。', '#98D8C8', 'images/icons/numbers.png', 'images/cognitive/numbers.jpg', 0, 1, 3, NOW());

-- 插入颜色认知模块子项
INSERT INTO `km_cognitive_items` 
(`module_id`, `name`, `description`, `content`, `additional_info`, `image_path`, `is_active`, `display_order`, `created_at`)
VALUES 
(1, '红色', '火热、活力的颜色', '红色是一种明亮、引人注目的颜色，像火焰一样充满热情和活力。', '生活中的红色物品：苹果、草莓、红灯、消防车', 'images/colors/red.jpg', 1, 1, NOW()),
(1, '蓝色', '冷静、平和的颜色', '蓝色是一种冷静、宁静的颜色，像广阔的天空和深邃的海洋。', '生活中的蓝色物品：蓝天、海洋、蓝莓、蓝色衣服', 'images/colors/blue.jpg', 1, 2, NOW());
SQL;
}

// 创建PDO连接
try {
    $dsn = "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET;
    $pdo = new PDO($dsn, DB_USERNAME, DB_PASSWORD);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    echo "<div style='font-family: Arial, sans-serif; max-width: 800px; margin: 20px auto; padding: 20px; border: 1px solid #ddd; border-radius: 5px;'>";
    echo "<h2>数据库修复工具</h2>";
    echo "<div style='background-color: #e8f5e9; padding: 10px; border-radius: 5px; margin-bottom: 10px;'>数据库连接成功！</div>";
    
    if($file_exists) {
        echo "<div style='background-color: #e3f2fd; padding: 10px; border-radius: 5px; margin-bottom: 10px;'>SQL文件存在: $file_path</div>";
    } else {
        echo "<div style='background-color: #fff3e0; padding: 10px; border-radius: 5px; margin-bottom: 10px;'>SQL文件不存在，使用内嵌SQL: $file_path</div>";
    }
    
    // 手动添加外键设置前先删除可能存在的外键约束
    try {
        $pdo->exec("SET FOREIGN_KEY_CHECKS = 0;");
    } catch (Exception $e) {
        echo "<div style='background-color: #fff3e0; padding: 10px; border-radius: 5px; margin-bottom: 10px;'>警告：无法禁用外键检查</div>";
    }
    
    // 将SQL文件分割为单独的语句
    $sql_statements = explode(';', $sql_content);
    
    // 执行每个SQL语句
    $success_count = 0;
    $error_count = 0;
    
    foreach ($sql_statements as $statement) {
        $statement = trim($statement);
        if (!empty($statement)) {
            try {
                $pdo->exec($statement);
                $success_count++;
            } catch (PDOException $e) {
                $error_count++;
                echo "<div style='background-color: #ffebee; padding: 10px; border-radius: 5px; margin-bottom: 10px;'>";
                echo "SQL错误: " . $e->getMessage() . "<br>";
                echo "SQL语句: " . htmlspecialchars(substr($statement, 0, 150)) . "...</div>";
            }
        }
    }
    
    // 尝试添加外键约束
    try {
        // 在创建完表之后再添加外键约束
        $pdo->exec("ALTER TABLE `km_cognitive_modules` 
                    ADD CONSTRAINT `fk_cognitive_modules_category_id` 
                    FOREIGN KEY (`category_id`) REFERENCES `km_cognitive_categories` (`id`) 
                    ON DELETE CASCADE");
        
        $pdo->exec("ALTER TABLE `km_cognitive_items` 
                    ADD CONSTRAINT `fk_cognitive_items_module_id` 
                    FOREIGN KEY (`module_id`) REFERENCES `km_cognitive_modules` (`id`) 
                    ON DELETE CASCADE");
        
        $pdo->exec("SET FOREIGN_KEY_CHECKS = 1;");
        echo "<div style='background-color: #e8f5e9; padding: 10px; border-radius: 5px; margin-bottom: 10px;'>外键约束添加成功</div>";
    } catch (PDOException $e) {
        echo "<div style='background-color: #fff3e0; padding: 10px; border-radius: 5px; margin-bottom: 10px;'>";
        echo "添加外键约束时出错: " . $e->getMessage() . "<br>";
        echo "这不会影响基本功能，您可以正常使用系统。</div>";
    }
    
    echo "<div style='background-color: #e3f2fd; padding: 10px; border-radius: 5px; margin-bottom: 10px;'>";
    echo "执行结果: 成功执行 $success_count 条SQL语句，失败 $error_count 条。</div>";
    
    // 检查表是否创建成功
    $tables_to_check = [
        'km_cognitive_categories',
        'km_cognitive_modules',
        'km_cognitive_items'
    ];
    
    echo "<h3>表格状态检查:</h3>";
    echo "<ul style='list-style-type: none; padding: 0;'>";
    
    foreach ($tables_to_check as $table) {
        $stmt = $pdo->prepare("SHOW TABLES LIKE ?");
        $stmt->execute([$table]);
        
        if ($stmt->rowCount() > 0) {
            // 获取记录数
            $count_stmt = $pdo->query("SELECT COUNT(*) FROM $table");
            $record_count = $count_stmt->fetchColumn();
            
            echo "<li style='padding: 5px 10px; margin-bottom: 5px; background-color: #e8f5e9; border-radius: 3px;'>✅ 表 '$table' 存在，包含 $record_count 条记录</li>";
        } else {
            echo "<li style='padding: 5px 10px; margin-bottom: 5px; background-color: #ffebee; border-radius: 3px;'>❌ 表 '$table' 不存在</li>";
        }
    }
    
    echo "</ul>";
    
    // 提供一些其他有用的链接
    echo "<div style='margin-top: 20px;'>";
    echo "<a href='dashboard.php' style='display: inline-block; padding: 10px 15px; background-color: #2196f3; color: white; text-decoration: none; border-radius: 4px; margin-right: 10px;'>返回控制面板</a>";
    echo "<a href='setup_tables.php' style='display: inline-block; padding: 10px 15px; background-color: #4caf50; color: white; text-decoration: none; border-radius: 4px;'>运行完整数据库安装</a>";
    echo "</div>";
    
    echo "</div>";
    
} catch (PDOException $e) {
    echo "<div style='font-family: Arial, sans-serif; max-width: 800px; margin: 20px auto; padding: 20px; border: 1px solid #ddd; border-radius: 5px;'>";
    echo "<h2>数据库修复工具</h2>";
    echo "<div style='background-color: #ffebee; padding: 10px; border-radius: 5px;'>数据库连接失败: " . $e->getMessage() . "</div>";
    echo "</div>";
}
?> 